Generators cannot be reused (once exhausted, they're done). They are not ideal for random access or multiple-pass algorithms. They also cannot be used for async operations without a runner.
Generators are single-use; you cannot restart them. They lack random access (no [index]). They are not suitable for algorithms that require multiple passes over the data unless you regenerate the generator. They also do not natively support concurrency or parallelism; you need additional machinery (like a scheduler) for that.